package br.unicamp.ic.inf300.arena.modelo.vendas;
/**
 * ArenaTicketMain - Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * CartaoCredito.java
 */

public class CartaoCredito extends Pagamento {
	private long numeroCartao;
	private String bandeira;

	public CartaoCredito() {
		super(Pagamento.TIPO_CARTAO);
	}

	/**
	 * 
	 * @param numero
	 */
	public CartaoCredito(long numero) {
		this.setTipo(Pagamento.TIPO_CARTAO);
		this.numeroCartao = numero;
	}

	/**
	 * 
	 * @param numero
	 * @param bandeira
	 */
	public CartaoCredito(long numero, String bandeira) {
		this.setTipo(Pagamento.TIPO_CARTAO);
		this.numeroCartao = numero;
		this.bandeira = bandeira;
	}

	/**
	 * 
	 * @param valor
	 * @param numero
	 * @param bandeira
	 */
	public CartaoCredito(double valor, long numero, String bandeira) {
		super(Pagamento.TIPO_CARTAO, valor);
		this.numeroCartao = numero;
		this.bandeira = bandeira;
	}

	/**
	 * 
	 * @param codpagto
	 * @param valor
	 * @param numero
	 * @param bandeira
	 */
	public CartaoCredito(int codpagto, double valor, long numero, String bandeira) {
		super(codpagto, Pagamento.TIPO_CARTAO, valor);
		this.numeroCartao = numero;
		this.bandeira = bandeira;
	}

	public long getNumeroCartao() {
		return numeroCartao;
	}

	public void setNumeroCartao(long numero) {
		this.numeroCartao = numero;
	}

	public String getBandeira() {
		return bandeira;
	}

	public void setBandeira(String bandeira) {
		this.bandeira = bandeira;
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("CartaoCredito ( ")
	        .append(super.toString()).append(TAB)
	        .append("bandeira = ").append(this.bandeira).append(TAB)
	        .append("numeroCartao = ").append(this.numeroCartao).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + (int) (numeroCartao ^ (numeroCartao >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		final CartaoCredito other = (CartaoCredito) obj;
		if (numeroCartao != other.numeroCartao)
			return false;
		return true;
	}
}